home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Monster Media 1994 #2
/
Monster Media No. 2 (Monster Media)(1994).ISO
/
pcboard
/
bcmx120.zip
/
FEEDBACK.PPE
(
.txt
)
< prev
next >
Wrap
PCBoard Programming Language Executable
|
1994-07-04
|
10KB
|
680 lines
;------------------------------------------------------------------------------
; .ss.
; `²²'
; .,sS$Ss,,s$ .,sS$$$Ss. .,sS$Ss,,s$ .ss. .sSs.
; .d$$²^°²$$$$'.d$P²°^^²$P'.d$$²^°²$$$$'.$$$' .$$$²Sb,.
; $$$' .$$$' $$$²Sçsµ²' .$$$' .$$$'.$$$' .$$$' `$$b.
; $$$b,,d$$$' ,$$$b,....,s$$$$b,,d$$$'.$$$;.,$$$' ;$$$
; `²S$$S²²S$$S²°²S$$$$S²°°²S$$$$$$',$$S²°²S$S'.sS$$$P²'
; .sS²°$$$²²°"' d²°'
; .$$² .$$'
; $$$.,d$$'
; `²S$$S²'
;------------------------------------------------------------------------------
; P.P.L.X. 2.OO (C)1996 - Lone Runner / AEGiS CoRP'96
;------------------------------------------------------------------------------
; PPE 2.OO (plain) - Analysis ON - Postprocessing ON
;------------------------------------------------------------------------------
Boolean BOOLEAN001
Boolean BOOLEAN002
Boolean BOOLEAN003
Boolean BOOLEAN004
Boolean BOOLEAN005
Integer INTEGER001
Integer INTEGER002
Integer INTEGER003
Integer INTEGER004
Integer INTEGER005
Integer INTEGER006
Integer INTEGER007
Integer INTEGER008
Integer INTEGER009
Integer INTEGER010
Integer INTEGER011
Integer INTEGER012
Integer INTEGER013
Integer INTEGER014
Integer INTEGER015
Integer INTEGER016
Integer INTEGER017
Integer INTEGER018
Integer INTEGER019
Integer INTEGER020
Integer INTEGER021
Integer INTEGER022
Integer INTEGER023
Integer INTEGER024
String STRING001
String STRING002
String STRING003
String STRING004
String STRING005
String STRING006
String STRING007
String STRING008
String STRING009
String STRING010
String STRING011
String STRING012
String STRING013
String STRING014
String STRING015
String STRING016
String STRING017
String STRING018
String STRING019
String STRING020
String STRING021
String STRING022
String STRING023
String STRING024
String STRING025
String STRING026
String STRING027
String STRING028
String STRING029
String STRING030
String STRING031
;------------------------------------------------------------------------------
STRING023 = PPEPath() + "cfg\fbmenus.cfg"
BOOLEAN003 = 0
BOOLEAN004 = 0
BOOLEAN001 = 0
STRING001 = PPEPath() + "\graph\fbtext"
If (LangExt() <> "") Then
If (BOOLEAN001) Then
PrintLn "Langext = " + LangExt()
Wait
Endif
If (Exist(STRING001 + LangExt())) STRING001 = STRING001 + LangExt()
Endif
STRING018 = PPEPath() + "\work\mxlog." + String(PcbNode())
STRING019 = PPEPath() + "\work\fbtmp." + String(PcbNode())
STRING002 = PPEPath() + "feedback.cfg"
BOOLEAN005 = 0
Tokenize TokenStr()
If (TokCount() >= 2) Then
If (GetToken() == "LOGON") Then
BOOLEAN005 = 1
STRING024 = GetToken()
Endif
STRING011 = GetToken()
While (STRING011 <> "") Do
STRING024 = STRING024 + " " + STRING011
STRING011 = GetToken()
EndWhile
Endif
STRING011 = ""
Tokenize ReadLine(STRING002, 2)
INTEGER002 = GetToken()
If (Upper(GetToken()) == "YES") Then
BOOLEAN002 = 1
Else
BOOLEAN002 = 0
Endif
INTEGER015 = GetToken()
STRING013 = PPEPath() + "mx.cfg"
If (BOOLEAN002) Then
If (LoggedOn()) Goto LABEL001
If (Exist(STRING013)) Then
If (Upper(ReadLine(STRING013, 3)) == "YES") Then
FAppend 3, STRING018, 1, 0
Goto LABEL001
Endif
BOOLEAN002 = 0
Endif
Endif
:LABEL001
If (LoggedOn()) Then
GetUser
STRING008 = U_Name()
Endif
INTEGER011 = 1
STRING015 = Chr(13)
STRING016 = Chr(27)
STRING017 = Chr(7)
INTEGER001 = ReadLine(STRING002, 1)
If (BOOLEAN002) Then
STRING003 = "Feedback started at " + String(Time())
Gosub LABEL018
Endif
If (AnsiOn()) Goto LABEL002
If (BOOLEAN002) Then
STRING003 = "No ansi, exiting feedback at " + String(Time())
Gosub LABEL018
Endif
PrintLn
PrintLn "No ansi capability, exiting feedback"
End
:LABEL002
StartDisp 1
INTEGER011 = 1
Tokenize ReadLine(STRING023, 1)
STRING025 = GetToken()
INTEGER016 = GetToken()
:LABEL003
STRING026 = Random(Time())
STRING026 = Random(STRING025 - 1) + 1
Tokenize ReadLine(STRING023, 1 + STRING026)
INTEGER021 = STRING026
INTEGER008 = GetToken()
INTEGER004 = GetToken()
INTEGER005 = GetToken()
STRING028 = GetToken()
STRING021 = GetToken()
STRING029 = GetToken()
STRING031 = PPEPath() + "mnutxt\fbmnu"
If (Exist(STRING031 + String(STRING026) + LangExt())) Then
STRING031 = PPEPath() + "mnutxt\fbmnu" + String(STRING026) + LangExt()
ElseIf (Exist(STRING031 + String(STRING026))) Then
STRING031 = PPEPath() + "mnutxt\fbmnu" + String(STRING026)
ElseIf (Exist(STRING031 + LangExt())) Then
STRING031 = PPEPath() + "mnutxt\fbmnu" + LangExt()
Endif
If (INTEGER001 == 1) Goto LABEL010
If (BOOLEAN005) Goto LABEL010
INTEGER012 = INTEGER001
:LABEL004
INTEGER006 = INTEGER004
INTEGER007 = INTEGER005
If (BOOLEAN004) Goto LABEL005
DefColor
Cls
DispFile PPEPath() + "graph\feed" + String(INTEGER021), 1 + 4
:LABEL005
Color DefColor()
STRING030 = ReadLine(STRING031, 1)
INTEGER024 = Len(StripAtx(STRING030)) - 4
If (INTEGER016 >= INTEGER001) Then
INTEGER011 = 1
For INTEGER013 = 1 To INTEGER001
AnsiPos INTEGER006 - INTEGER024, INTEGER007 + INTEGER013 - 1
STRING006 = Chr(Asc("a") + INTEGER013)
INTEGER023 = (INTEGER013 - 1) * 2 + 1
STRING012 = STRING028 + ReadLine(STRING031, INTEGER023 + 1)
STRING012 = STRING012 + STRING029 + ReadLine(STRING031, INTEGER023 + 2)
Print ReplaceStr(STRING030, "%SEP%", STRING006), STRING012
Next
INTEGER019 = INTEGER011
INTEGER018 = INTEGER011 + INTEGER001 - 1
Else
If (INTEGER011 + INTEGER016 <= INTEGER012) INTEGER017 = INTEGER011 + INTEGER016 - 1
If (INTEGER011 + INTEGER016 > INTEGER012) INTEGER017 = INTEGER012
INTEGER013 = INTEGER011 + INTEGER016 - INTEGER012
INTEGER019 = INTEGER011
INTEGER018 = INTEGER017
Color DefColor()
INTEGER014 = INTEGER011 % INTEGER016
For INTEGER013 = INTEGER011 To INTEGER017
If (INTEGER014 == 0) INTEGER014 = INTEGER016
AnsiPos INTEGER006 - INTEGER024, INTEGER007 + INTEGER014 - 1
STRING006 = Chr(Asc("a") + INTEGER014)
INTEGER023 = (INTEGER013 - 1) * 2 + 1
STRING012 = STRING028 + ReadLine(STRING031, INTEGER023 + 1)
STRING012 = STRING012 + STRING029 + ReadLine(STRING031, INTEGER023 + 2)
Print ReplaceStr(STRING030, "%SEP%", STRING006), STRING012
Inc INTEGER014
Next
If (INTEGER011 + INTEGER016 > INTEGER012) Then
INTEGER013 = INTEGER011 + INTEGER016 - INTEGER012
INTEGER003 = GetY()
For INTEGER014 = 1 To INTEGER013 - 1
AnsiPos INTEGER006 - INTEGER024, INTEGER003 + INTEGER014
Print Space(INTEGER008)
Next
Endif
Endif
Newline
BOOLEAN004 = 0
AnsiPos INTEGER006, INTEGER007
Print STRING021, StripAtx(ReadLine(STRING031, (INTEGER011 - 1) * 2 + 1 + 1))
:LABEL006
STRING007 = Inkey()
If (BOOLEAN001) If (STRING007 <> "") PrintLn STRING007
If (((Upper(STRING007) == "A") || (STRING007 == "UP")) || (STRING007 == "LEFT")) Then
INTEGER014 = INTEGER011 % INTEGER016
If (INTEGER014 == 0) INTEGER014 = INTEGER016
AnsiPos INTEGER006, INTEGER007 + INTEGER014 - 1
Print ReadLine(STRING031, (INTEGER011 - 1) * 2 + 1 + 1)
If (INTEGER011 % INTEGER016 == 1) Then
INTEGER011 = INTEGER011 + INTEGER016 - 1
If (INTEGER011 > INTEGER012) INTEGER011 = INTEGER012
Else
INTEGER011 = INTEGER011 - 1 % INTEGER016
Endif
INTEGER014 = INTEGER011 % INTEGER016
If (INTEGER014 == 0) INTEGER014 = INTEGER016
AnsiPos INTEGER006, INTEGER007 + INTEGER014 - 1
Print STRING021, StripAtx(ReadLine(STRING031, (INTEGER011 - 1) * 2 + 1 + 1))
Goto LABEL006
ElseIf (((Upper(STRING007) == "Z") || (STRING007 == "DOWN")) || (STRING007 == "RIGHT")) Then
INTEGER014 = INTEGER011 % INTEGER016
If (INTEGER014 == 0) INTEGER014 = INTEGER016
AnsiPos INTEGER006, INTEGER007 + INTEGER014 - 1
Print ReadLine(STRING031, (INTEGER011 - 1) * 2 + 1 + 1)
If (INTEGER011 % INTEGER016 == 0) Then
INTEGER011 = INTEGER011 - INTEGER016 - 1
ElseIf (INTEGER011 == INTEGER012) Then
INTEGER011 = INTEGER019
Else
INTEGER011 = INTEGER011 + 1
Endif
INTEGER014 = INTEGER011 % INTEGER016
If (INTEGER014 == 0) INTEGER014 = INTEGER016
AnsiPos INTEGER006, INTEGER007 + INTEGER014 - 1
Print STRING021, StripAtx(ReadLine(STRING031, (INTEGER011 - 1) * 2 + 1 + 1))
Goto LABEL006
Else
Select Case (STRING007)
Case STRING015
If (STRING007 <> STRING015) INTEGER011 = STRING007
INTEGER013 = INTEGER011
Gosub LABEL010
INTEGER011 = INTEGER019
Goto LABEL003
Case "HOME"
INTEGER014 = INTEGER011 % INTEGER016
If (INTEGER014 == 0) INTEGER014 = INTEGER016
AnsiPos INTEGER006, INTEGER007 + INTEGER014 - 1
Print ReadLine(STRING031, (INTEGER011 - 1) * 2 + 1 + 1)
INTEGER011 = INTEGER019
INTEGER014 = INTEGER011 % INTEGER016
If (INTEGER014 == 0) INTEGER014 = INTEGER016
AnsiPos INTEGER006, INTEGER007 + INTEGER014 - 1
Print STRING021, StripAtx(ReadLine(STRING031, (INTEGER011 - 1) * 2 + 1 + 1))
Goto LABEL006
Case "END"
INTEGER014 = INTEGER011 % INTEGER016
If (INTEGER014 == 0) INTEGER014 = INTEGER016
AnsiPos INTEGER006, INTEGER007 + INTEGER014 - 1
Print ReadLine(STRING031, (INTEGER011 - 1) * 2 + 1 + 1)
INTEGER011 = INTEGER018
INTEGER014 = INTEGER011 % INTEGER016
If (INTEGER014 == 0) INTEGER014 = INTEGER016
AnsiPos INTEGER006, INTEGER007 + INTEGER014 - 1
Print STRING021, StripAtx(ReadLine(STRING031, (INTEGER011 - 1) * 2 + 1 + 1))
Goto LABEL006
Case "?"
DefColor
INTEGER009 = GetX()
INTEGER010 = GetY()
AnsiPos 1, 23
SaveScrn
StartDisp 2
Cls
DispFile PPEPath() + "graph\fbhlp", 1 + 4
Wait
StartDisp 1
RestScrn
AnsiPos INTEGER009, INTEGER010
Goto LABEL006
Case ">", "CTRL PGDN"
If (INTEGER018 + INTEGER016 <= INTEGER012) Then
INTEGER011 = INTEGER018 + 1
BOOLEAN004 = 1
Goto LABEL004
Else
If (INTEGER018 <> INTEGER012) Then
INTEGER011 = INTEGER018 + 1
BOOLEAN004 = 1
Goto LABEL004
Endif
MPrint STRING017
Goto LABEL006
Endif
Case "<", "CTRL PGUP"
If (INTEGER019 - INTEGER016 >= 1) Then
INTEGER011 = INTEGER019 - INTEGER016
BOOLEAN004 = 1
Goto LABEL004
Else
MPrint STRING017
Goto LABEL006
Endif
Case "Q", STRING016
DefColor
Cls
If (BOOLEAN002) Then
STRING003 = "Exiting feedback " + String(Time())
Gosub LABEL018
Endif
End
Case Else
If ((STRING007 >= "b") && (STRING007 <= STRING006)) Then
INTEGER011 = INTEGER019 + Asc(STRING007) - Asc("b")
INTEGER013 = INTEGER011
Gosub LABEL010
INTEGER011 = INTEGER019
Goto LABEL003
Endif
If (BOOLEAN001) If (STRING007 <> "") PrintLn STRING007
If (STRING007 == "■") Then
:LABEL007
STRING007 = Inkey()
If (STRING007 == "") Goto LABEL007
If (STRING007 <> "e") Goto LABEL006
:LABEL008
STRING007 = Inkey()
If (STRING007 == "") Goto LABEL008
If (STRING007 <> "l") Goto LABEL006
GetAltUser 1
STRING004 = ReadLine(PCBDat(), 2)
Tokenize U_Name()
If (TokCount() > 1) Then
PrintLn
KbdStuff U_Name() + STRING015
Goto LABEL009
Endif
KbdStuff U_Name() + STRING015 + STRING015
:LABEL009
KbdStuff U_Pwd + STRING015
End
Endif
Goto LABEL006
Endif
End Select
End
:LABEL010
DefColor
Cls
INTEGER022 = STRING025 + 2
INTEGER020 = ReadLine(STRING023, STRING025 + 1 + 1)
If (BOOLEAN005) Then
STRING010 = StripAtx(ReadLine(STRING002, 4))
STRING008 = STRING024
STRING005 = ReadLine(STRING001, 2)
Else
STRING027 = Random(Time())
STRING027 = Random(INTEGER020 - 1) + 1
Tokenize ReadLine(STRING023, STRING025 + 1 + STRING027 + 1)
DispFile PPEPath() + "graph\fbinfo" + String(STRING027), 1 + 4
If (INTEGER001 == 1) Then
STRING010 = StripAtx(ReadLine(STRING002, 4))
AnsiPos GetToken(), GetToken()
Print GetToken() + Upper(STRING010)
Else
STRING010 = StripAtx(ReadLine(STRING002, INTEGER011 - 1 + 4))
AnsiPos GetToken(), GetToken()
Print GetToken() + Upper(STRING010)
Endif
If (BOOLEAN002) Then
STRING003 = "Sysop (" + Upper(STRING010) + ") selected for feedback"
Gosub LABEL018
Endif
If (LoggedOn()) Goto LABEL011
STRING007 = ""
AnsiPos GetToken(), GetToken()
InputText GetToken() + "_", STRING007, 3, 70
If (STRING007 == "") Then
If (BOOLEAN002) Then
STRING003 = "No user name given in feedback"
Gosub LABEL018
Endif
Return
Endif
If (BOOLEAN002) Then
STRING003 = "Handle (" + Upper(STRING007) + ") entered for feedback"
Gosub LABEL018
Endif
STRING008 = STRING007
Goto LABEL012
:LABEL011
AnsiPos GetToken(), GetToken()
Print GetToken() + Upper(STRING008)
If (BOOLEAN002) Then
STRING003 = "Handle (" + Upper(STRING008) + ") used"
Gosub LABEL018
Endif
:LABEL012
STRING007 = ""
AnsiPos GetToken(), GetToken()
InputText GetToken() + "_", STRING007, 3, 60
If (STRING007 == "") Then
If (BOOLEAN002) Then
STRING003 = "No feedback subject given"
Gosub LABEL018
Endif
Return
Endif
STRING005 = STRING007
If (BOOLEAN002) Then
STRING003 = "Feedback subject (" + Upper(STRING005) + ") entered"
Gosub LABEL018
Endif
Endif
:LABEL013
FCreate 1, STRING019, 1, 0
:LABEL014
DefColor
Cls
STRING026 = Random(Time())
STRING026 = Random(ReadLine(STRING023, INTEGER022 + INTEGER020 + 1) - 1) + 1
Tokenize ReadLine(STRING023, INTEGER022 + INTEGER020 + 1 + STRING026)
DispFile PPEPath() + "graph\fbhdr" + String(STRING026), 1 + 4
AnsiPos GetToken(), GetToken()
Print GetToken() + String(INTEGER015)
AnsiPos GetToken(), GetToken()
Print GetToken() + String(STRING010)
AnsiPos GetToken(), GetToken()
Print GetToken() + String(STRING008)
AnsiPos GetToken(), GetToken()
Print GetToken() + String(STRING005)
INTEGER013 = 0
STRING009 = ReadLine(STRING001, 9)
AnsiPos GetToken(), GetToken()
STRING022 = GetToken()
If (BOOLEAN003) Then
STRING014 = ""
While (1) Do
FGet 1, STRING014
If (Ferr(1)) Break
PrintLn STRING009, STRING014
Inc INTEGER013
EndWhile
BOOLEAN003 = 0
Endif
While (1) Do
If (INTEGER013 >= INTEGER015) Break
STRING020 = ""
InputStr STRING022 + STRING009 + "_", STRING020, 15, 75, Mask_Ascii(), 2 + 512
If (Upper(STRING020) == "/S") Then
Break
AnsiPos 1, GetY()
ClrEol
Else
Newline
FPutLn 1, STRING020
AnsiPos 1, GetY()
ClrEol
Endif
Inc INTEGER013
EndWhile
FClose 1
:LABEL015
Newline
STRING007 = "S"
If (BOOLEAN005) Then
InputStr ReadLine(STRING001, 1), STRING007, 1, 1, "SsTtCc", 2
Else
InputStr ReadLine(STRING001, 10), STRING007, 1, 1, "AaSsTtCc", 2
Endif
Select Case (Upper(STRING007))
Case "A"
Goto LABEL017
Case "T"
Goto LABEL013
Case "S"
Goto LABEL016
Case "C"
FOpen 1, STRING019, 2, 0
BOOLEAN003 = 1
Goto LABEL014
Case Else
Goto LABEL015
End Select
:LABEL016
Message INTEGER002, Upper(STRING010), Upper(STRING008), ReadLine(STRING001, 11) + STRING005, "R", 0, 0, 0, STRING019
If (BOOLEAN002) Then
STRING003 = "feedback for sysop (" + Upper(STRING010) + ") entered and saved"
Gosub LABEL018
Endif
Delete STRING019
If (Exist(PPEPath() + "work\posted." + String(PcbNode()))) Then
FOpen 1, PPEPath() + "work\posted." + String(PcbNode()), 1, 0
FPut 1, "YES"
FClose 1
Endif
Return
:LABEL017
If (BOOLEAN002) Then
STRING003 = "Feedback aborted"
Gosub LABEL018
Endif
Delete STRING019
If (Exist(PPEPath() + "work\posted." + String(PcbNode()))) Then
FOpen 1, PPEPath() + "work\posted." + String(PcbNode()), 1, 0
FPut 1, "NO"
FClose 1
Endif
Return
:LABEL018
If (LoggedOn()) Goto LABEL019
FPutLn 3, " " + STRING003
Return
:LABEL019
Log STRING003, 0
Return
;------------------------------------------------------------------------------
;
; Usage report (before postprocessing)
;
; ■ Statements used :
;
; 4 End
; 5 Cls
; 2 ClrEol
; 2 Wait
; 2 Color
; 129 Goto
; 152 Let
; 19 Print
; 7 PrintLn
; 93 If
; 4 DispFile
; 1 FCreate
; 3 FOpen
; 1 FAppend
; 3 FClose
; 1 FGet
; 2 FPut
; 2 FPutLn
; 3 StartDisp
; 1 GetUser
; 5 DefColor
; 2 Delete
; 1 Log
; 3 InputStr
; 13 Gosub
; 6 Return
; 3 Inc
; 3 Newline
; 7 Tokenize
; 2 InputText
; 3 KbdStuff
; 26 AnsiPos
; 1 Message
; 1 SaveScrn
; 1 RestScrn
; 2 MPrint
; 1 GetAltUser
;
;
; ■ Functions used :
;
; 11 *
; 12 %
; 150 +
; 42 -
; 43 ==
; 8 <>
; 3 <
; 6 <=
; 4 >
; 11 >=
; 67 !
; 7 &&
; 10 ||
; 1 Len(
; 20 Upper()
; 1 Space()
; 1 Ferr()
; 5 Chr()
; 4 Asc()
; 6 Random()
; 6 Time()
; 4 U_Name()
; 9 StripAtx()
; 3 Inkey()
; 20 String()
; 1 Mask_Ascii()
; 1 PCBDat()
; 18 PPEPath()
; 6 PcbNode()
; 32 ReadLine()
; 45 GetToken()
; 7 Exist()
; 1 TokenStr()
; 8 LangExt()
; 1 AnsiOn()
; 1 GetX()
; 4 GetY()
; 2 DefColor()
; 4 LoggedOn()
; 2 TokCount()
; 2 ReplaceStr()
;
;------------------------------------------------------------------------------
;
; Analysis flags : RMdH
;
; R - Read user ■ 5
; User records are read, this may signify that someone wants to get
; various informations about a user (for example his password), but
; this may also be normal for a program accessing user records (for
; example a User Editor)
; ■ Search for : GETALTUSER
;
; M - Send text to modem only ■ 4
; Some informations are sent only to the modem, not to the local
; screen, this is a well known way to make stealth backdoors, Check!
; ■ Search for : SENDMODEM, MPRINT, MPRINTLN
;
; d - Access PCBOARD.DAT ■ 2
; Program gets the full pathname to PCBOARD.DAT, this may be usefull
; for many PPE so they can find various informations on the system
; (system paths, max number of lines in messages, ...) but it may also
; be a way to gather vital informations.
; ■ Search for : PCBDAT()
;
; H - Read Password or Password History ■ 5
; Program is reading the user's password or last password history
; This may be ok for a password manager, but it is very suspect. Check!
; ■ Search for : U_PWDHIST, U_PWD
;
;------------------------------------------------------------------------------
;
; Postprocessing report
;
; 3 For/Next
; 3 While/EndWhile
; 45 If/Then or If/Then/Else
; 2 Select Case
;
;------------------------------------------------------------------------------
; AEGiS Corp - Break the routines, code against the machines!
;------------------------------------------------------------------------------